package com.ponhu.ea2.service.facade;

import com.ponhu.ea2.vo.*;

import java.util.List;

public interface CommonApiService {

    /**
     * 获取全部货品类型字段项
     *
     * @return
     */
    List<PhSysDictItemVo> getAllInventoryTypes();

    /**
     * 获取全部货品来源字段项
     *
     * @return
     */
    List<PhSysDictItemVo> getAllInventoryChannels();

    /**
     * 获取全部入库方式
     *
     * @return
     */
    List<PhSysDictItemVo> getAllWarehouseWays();

    /**
     * 获取全部成色类型字段项
     *
     * @return
     */
    List<PhSysDictItemVo> getAllConditionTypes();

    List<PhBrandVo> getPhBrandsByName(String name);

    /**
     * 获取全部品牌或搜索品牌
     *
     * @param name
     * @return
     */
    List<PhBrandVo> getPhBrandsByName(String name, Boolean isAll);

    /**
     * 根据品牌或系列查询所有型号
     *
     * @param seriesId
     * @return
     */
    List<PhModelVo> getPhModelsBySeries(Long seriesId);

    /**
     * 根据品牌或系列查询所有物料型号
     *
     * @param brandId
     * @param seriesId
     * @return
     */
    List<PhMaterialModelVo> getPhMaterialModelsByBrandOrSeries(Long brandId, Long seriesId);

    List<PhCategoryVo> getPhCategorysByLevel(Integer level, Long parentId);

    /**
     * 获取指定分级和父级类目ID的全部类目集合
     *
     * @param level
     * @param parentId
     * @return
     */
    List<PhCategoryVo> getPhCategorysByLevel(Integer level, Long parentId, Boolean isAll);

    /**
     * 获取全部国家信息
     *
     * @return
     */
    List<String> getAllCountries();

    /**
     * 获取全部国家信息
     *
     * @return
     */
    List<PhCountriesVo> getAllCountriesForVo();

    /**
     * 获取全部货源字段项
     *
     * @return
     */
    List<PhSysDictItemVo> getAllInventorySources();

    /**
     * 根据品牌获取所有系列
     *
     * @param brandId
     * @return
     */
    List<PhSeriesVO> queryPhSeriesByBrandId(Long brandId);

    /**
     * 根据品牌获取所有的型号
     *
     * @param brandId
     * @return
     */
    List<PhModelVo> queryPhModelByBrandId(Long brandId);

    /**
     * 获取全部货品附件字段项
     *
     * @return
     */
    List<PhSysDictItemVo> getAllInventoryAnnexs();

    /**
     * 获取全部货品配件字段项
     *
     * @return
     */
    List<PhSysDictItemVo> getAllInventoryAccessorys();

    /**
     * 获取指定类目ID所属的全部货品属性
     *
     * @param level
     * @param categoryId
     * @return
     */
    List<PhPropertyEditVo> getAllInventoryProps(Integer level, Long categoryId);

    /**
     * 获取指定类目ID所属的全部属性
     *
     * @param level
     * @param categoryId
     * @return
     */
    List<PhPropertyEditVo> getAllProps(Integer level, Long categoryId, Integer type);

    /**
     * 获取指定类目ID所属的全部物料属性
     *
     * @param level
     * @param categoryId
     * @return
     */
    List<PhPropertyEditVo> getAllMaterialProps(Integer level, Long categoryId);

    /**
     * 获取指定类目ID的三级类目信息
     *
     * @param level3CategoryId
     * @return
     */
    PhCategoryLevel3Vo getCategoryLevel3VoById(Long level3CategoryId);

    /**
     * 获取指定类目名称的三级类目信息
     *
     * @param level3CategoryName
     * @return
     */
    PhCategoryLevel3Vo getCategoryLevel3VoByName(String level3CategoryName);

    /**
     * 根据品类Id获取品类信息
     *
     * @param categoryId
     * @return
     */
    PhCategoryVo getCategoryByCategoryId(Long categoryId);

    /**
     * 获取全部采购类型
     *
     * @return
     */
    List<PhSysDictItemVo> getAllPurchaseTypes();

    /**
     * 获取全部采购渠道
     *
     * @return
     */
    List<PhSysDictItemVo> getAllPurchaseChannel();

    /**
     * 获取指定类目ID所属的全部指定类型的属性
     *
     * @return
     */
    List<PhPropertyVo> getAllTypeProps(Long categoryId, String name);

    /**
     * 获取指定属性ID所属的全部属性值
     *
     * @return
     */
    List<PhPropertyVo> getAllPropValues(Long propId);

    List<PhSeriesVO> queryPhSeriesByBrandIds(List<Long> brandIds);

    List<PhModelVo> queryPhModelByBrandIds(List<Long> brandIds);

}
